package com.shg.web.tools;


import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.shg.bean.Admin;
import com.shg.bean.Users;

public class WebTool{

	//登录用户信息
	public static String SHG_MANAGER_USER="shg_manager_user";
	//公司内部管理员
	public static String SHG_MANAGER_ADMIN="shg_manager_admin";
	//浏览历史
	public static String  SHG_BROWSE_HISTORY="shg_browse_history";
	//拆分字符串
	public static String SHG_SPLIT="&";
	//cookie里面只能存储的ID数
	public static Integer SHG_COOKIE_LENGHT=10;
	
	  /**
     * 将登录后的用户保存进入session
     */
    public static void saveUser(Object entity){
    	ActionContext.getContext().getSession().put(WebTool.SHG_MANAGER_USER, entity);
    }
	/**
	 * 获取买卖家登录信息
	 * @return
	 */
	public static Users getLogin(){
		return (Users) ActionContext.getContext().getSession().get(WebTool.SHG_MANAGER_USER);
	}
	/**
	 * 退出登录
	 */
	public static Users setLoginOut(){
		ActionContext.getContext().getSession().remove(WebTool.SHG_MANAGER_USER);
		return getLogin();
	}
	/**
	 * 获取公司内部管理员信息
	 */
	public static Admin getAdmin(){
		return (Admin) ActionContext.getContext().getSession().get(SHG_MANAGER_ADMIN);
	}
	/**
     * 获取完整请求路径(含内容路径及请求参数)
     * @param request
     * @return
     */
    public static String getRequestURIWithParam(HttpServletRequest request){     
        return getRequestURI(request) + (request.getQueryString() == null ? "" : "?"+ request.getQueryString());
    }
    /***
     * 获取URI的路径,如路径为http://www.shuhg.com/control/action/post.htm?method=add, 得到的值为"/action/post.htm"
     * @param request
     * @return
     */
    public static String getRequestURI(HttpServletRequest request){     
        return request.getRequestURI();
    }
  
    /**
     * 保存内部管理员登录的信息
     */
    public static void saveAdmin(Admin admin){
    	ActionContext.getContext().getSession().put(WebTool.SHG_MANAGER_ADMIN, admin);
    }
    /**
     * 获取Email
     */
    public static String getLoginUserEmail(){
    	return getLogin().getUserEmail();
    }
    /**
	 * 该方法在调用的时候需要传入一个ID号，他将会保存进入到cookie里面，
	 * 并返回cookie里面的所有已经浏览过的前10个ID号，调用这个方法将会返回
	 * 书籍的ID号，得到这个ID号就可以到数据库里面查询浏览过的书籍
	 * @param bookID
	 * @return
	 */
	public static String getHistory(String bookID){
		String str="";
		//取得所有的cookie
	    Cookie[] cookies =	ServletActionContext.getRequest().getCookies();
	    Cookie saveCookie = null;
	    //寻找我们需要的cookie
	    if(cookies!=null){
	    	 for(int i=0;i<cookies.length;i++){
	  		   if(cookies[i].getName().equals(SHG_BROWSE_HISTORY)){
	  			   //获取cookie的值
	  			   String value = cookies[i].getValue();
	  			   //如果cookie里面已经有数据就循环便利里面的数据否则直接把当前bookID添加进去
	  			   if(value!="" && value.length()>0 && value!=null){
	  				   //通过分割服 & 把字符串分割成字符数组
	  				   String [] array = value.split(SHG_SPLIT);
	  				   //循环便利这个字符数组，如果该数组中已经存在这个ID号就意味着用户浏览过该商品
	  				   for(int j=0;j<array.length;j++){
	  					   //如果该ID已经存在，那么就直接跳出不对其进来累加，并进行新的下一轮循环
	  					 if(array[j].equals(bookID)){
	  						 continue;
	  					 }else{
	  						 //浏览历史最多只能保存10个，所以这里面最多也只能拿出9个+最新一个也就是10个了
	  						 if(str.split(SHG_SPLIT).length<(SHG_COOKIE_LENGHT-1))
	  							 str+=array[j]+SHG_SPLIT;
	  					 }
	  				   }
	  				   //把最后一个分隔符删除
	  				   if(str!=null && !str.equals(""))
	  					   str = str.substring(0, str.lastIndexOf(SHG_SPLIT));
	  			   }
	  		   }
	  	   }
	    }
	   str=str==""?bookID:(bookID+SHG_SPLIT+str);
	   if(saveCookie==null)
		   saveCookie=new Cookie(SHG_BROWSE_HISTORY, str);
	   ServletActionContext.getResponse().addCookie(saveCookie);
	   return str;
	}
	/**
	 * 该方法返回保存在Cookie里面的书籍ID数组
	 * String[]
	 * @return
	  */
	public static String[] historyId(){
		Cookie [] cookies = ServletActionContext.getRequest().getCookies();
		for(int i =0;i<cookies.length;i++){
			if(cookies[i].getName().equals(SHG_BROWSE_HISTORY))
				return cookies[i].getValue().split(SHG_SPLIT);
		}
		return null;
	}
	
   
}
